
var functionList;
$(document).ready(function () {
    loadAllRole();
});
var table = layui.table;

//执行渲染
table.render({
    even:true//隔行背景
    ,elem: '#user-list' //指定原始表格元素选择器（推荐id选择器）
    ,height: 'full-220' //容器高度
    ,cols: [[{checkbox: true}
        ,{field: 'username', title: '用户名',sort:true,width:200}
        ,{field: 'name', title: '姓名',sort:true,width:200}
        ,{field: 'email', title: '邮箱',sort:true,width:200}
        ,{field: 'phone', title: '手机',sort:true,width:200}
        ,{field: 'department', title: '部门',sort:true,width:200}
        ,{fixed: 'right', width:200, align:'center', toolbar: '#toolBar',title:'操作'} //这里的toolbar值是模板元素的选择器

    ]] //设置表头
    ,url: '/manage/system/getUsers'
    ,where: {
        keywords:$("#keyword").val(),
        field:'username',
        order:'ASC'
    }
    ,method: 'post' //如果无需自定义HTTP类型，可不加该参数
    //request: {} //如果无需自定义请求参数，可不加该参数
    ,response: {
        statusName: 'status' //数据状态的字段名称，默认：code
        ,statusCode: 1 //成功的状态码，默认：0
        ,dataName: 'result' //数据列表的字段名称，默认：data
    } //如果无需自定义数据响应名称，可不加该参数
    ,page:true
    ,limits:[10,20,30,40,50,60,70,80,90,100]
    ,limit:10
    ,loading:true
    ,id:'id'
    //,…… //更多参数参考右侧目录：基本参数选项
});
//监听工具条
table.on('tool(test)', function(obj){ //注：tool是工具条事件名，test是table原始容器的属性 lay-filter="对应的值"
    var data = obj.data; //获得当前行数据
    var layEvent = obj.event; //获得 lay-event 对应的值
    var tr = obj.tr; //获得当前行 tr 的DOM对象

    if(layEvent === 'del'){ //删除
        deleteUsers(obj);
    } else if(layEvent === 'edit'){ //编辑
        openEditUser(obj);
    } else if(layEvent === 'resetpassword'){ //编辑
        openResetPassword(obj);
    }
});
table.on('sort(test)', function(obj){ //注：sort是排序事件名，test是table原始容器的属性 lay-filter="对应的值"
    console.log(obj.field); //当前排序的字段名
    console.log(obj.type); //当前排序类型：desc（降序）、asc（升序）、null（空对象，默认排序）
    console.log(this); //当前排序的 th 对象

    //尽管我们的 table 自带排序功能，但并没有请求服务端。
    //有些时候，你可能需要根据当前排序的字段，重新向服务端发送请求，如：
    table.reload('id', {
        initSort: obj //记录初始排序，如果不设的话，将无法标记表头的排序状态。 layui 2.1.1 新增参数
        ,where: { //请求参数
            field: obj.field //排序字段
            ,order: obj.type //排序方式
        }
    });
});
//重新加载数据
function reloadTableData(){
    table.reload('id',{
        method:'post'
        ,url: '/manage/system/getUsers'
        ,where: {
            keywords:$("#keyword").val(),
            field:'name',
            order:'ASC'
        }
    });
}
var form;
layui.use(['form'], function(){
    form = layui.form;
    //自定义验证规则
    form.verify({
        title: function(value){
            if(value.length < 2){
                return '标题至少得2个字符啊';
            }
        }
    });

    //监听提交
    form.on('submit(demo1)', function(data){
        var url = "/manage/system/";
        if($("#username").attr("readonly")=="readonly"){
            url += "updateUser";
        }
        else{
            url += "addUser";
        }
        displayLoading(true);
        $.post(url,$(".layui-form").serialize(),
            function(data){
                if(data.status==1){
                    layer.msg('保存成功', {icon: 6});
                }
                else if(data.status==4){
                    window.location.href="/manage/nopermission.html";
                }
                else if(data.status==5){
                    layer.confirm(data.msg, {icon: 3, title:'提示'}, function(index){
                        window.location.href="/manage/login.html";
                        layer.close(index);
                    });
                }
                else{
                    layer.msg(data.msg, {icon: 6});
                }
                hiddenLoading(true);
                if(data.msg!="用户名已存在，请更换。"){
                    $("#user-model").modal('hide');
                    reloadTableData();
                }
            });
        return false;
    });
});
//加载所有角色，以后编辑用户选择使用
function loadAllRole(){
    displayLoading(true);
    $.post("/manage/system/getRoles",{limit:10000,page:1,keywords:'',field:'roleName',order:'ASC'},
        function(data){
            if(data.status==1){
                data.result.forEach(function(roleItem,index,array){//添加角色到表单
                    var check = document.createElement("input");
                    check.type="checkbox";
                    check.name="roleIdList["+index+"]";
                    check.title=roleItem.roleName;
                    check.value=roleItem.roleId;
                    $("#role-list").append(check);
                });
                form.render('checkbox');//重新渲染checkbox表单
            }
            else if(data.status==4){
                window.location.href="/manage/nopermission.html";
            }
            else if(data.status==5){
                layer.confirm(data.msg, {icon: 3, title:'提示'}, function(index){
                    window.location.href="/manage/login.html";
                    layer.close(index);
                });
            }
            else{
                layer.msg(data.msg, {icon: 6});
            }
            hiddenLoading(true);
        });
}
function openAddUser(){
    $(":reset").click();//重置所有表单元素
    $('#username').removeAttr("readonly");//移除禁用
    $("#user-model").modal({
        keyboard: true
    });
}
function openEditUser(obj){
    $(":reset").click();//重置所有表单元素
    $('#username').attr("readonly","readonly");
    $('#username').val(obj.data.username);
    $('#name').val(obj.data.name);
    $('#email').val(obj.data.email);
    $('#phone').val(obj.data.phone);
    $('#department').val(obj.data.department);
    if(obj.data.roleIds!=null){//赋值角色
        var roleList = new Array();
        roleList = obj.data.roleIds.split(',');
        roleList.forEach(function(roleId,index,roleIdList){
            $('#role-list').children(':checkbox[value="'+roleId+'"]').next().click();
        });
    }
    $("#user-model").modal({
        keyboard: true
    });
}
function openResetPassword(obj){
    layer.confirm('是否将该用户密码重置为用户名？', function(index){
        layer.close(index);
        displayLoading(true);
        $.post("/manage/system/updatePassword",{username:obj.data.username,password:obj.data.username},
            function(data){
                if(data.status==1){//更新成
                    layer.msg(data.msg, {icon: 6});
                }
                else if(data.status==4){
                    window.location.href="/manage/nopermission.html";
                }
                else if(data.status==5){
                    layer.msg(data.msg, {icon: 6});
                    window.location.href="/manage/login.html";
                }
                else{
                    layer.msg(data.msg, {icon: 6});
                }
                hiddenLoading(true);
            });
    });
}
function deleteUsers(obj){
    layer.confirm('删除此数据，会删除用户相关角色的关联数据，确认要删除此数据吗？', function(index){
        layer.close(index);
        var username = new Array();
        if(obj){//删除单行
            username.push(obj.data.username);
        }
        else{//删除选中行
            var checkStatus = table.checkStatus('id');
            if(checkStatus.data.length==0){
                layer.msg('请先选择要删除的行',{icon:5});
                return;
            }
            else{
                checkStatus.data.forEach(function(item,index,dataList){
                    username.push(item.username);
                });
            }
        }
        displayLoading(true);
        $.post("/manage/system/deleteUsers",{usernameList:username},
            function(data){
                if(data.status==1){
                    //先更新本地数据
                    layer.msg('保存成功', {icon: 6});
                }
                else if(data.status==4){
                    window.location.href="/manage/nopermission.html";
                }
                else if(data.status==5){
                    layer.confirm(data.msg, {icon: 3, title:'提示'}, function(index){
                        window.location.href="/manage/login.html";
                        layer.close(index);
                    });
                }
                else{
                    layer.msg(data.msg, {icon: 6});
                }
                hiddenLoading(true);
                $("#role-model").modal('hide');
                reloadTableData();
            });
    });
}
$("#addUser").on('click',openAddUser);
$("#refresh,#search").on("click",reloadTableData);
$("#delAll").on('click',function(){deleteUsers()});